//
// Created by Administrator on 2023/11/9.
/*
 *OJ: http://ybt.ssoier.cn:8088/problem_show.php?pid=1322
 * 十个测试点2,4,5,7错误
 * 1322：【例6.4】拦截导弹问题(Noip1999)

时间限制: 1000 ms         内存限制: 65536 KB
【题目描述】

某国为了防御敌国的导弹袭击，开发出一种导弹拦截系统，但是这种拦截系统有一个缺陷：虽然它的第一发炮弹能够到达任意的高度，但是以后每一发炮弹都不能高于前一发的高度。某天，雷达捕捉到敌国的导弹来袭，由于该系统还在试用阶段。所以一套系统有可能不能拦截所有的导弹。

输入导弹依次飞来的高度（雷达给出的高度不大于30000的正整数）。计算要拦截所有导弹最小需要配备多少套这种导弹拦截系统。
【输入】
n颗依次飞来的高度（1≤n≤1000）。
【输出】
要拦截所有导弹最小配备的系统数k。
【输入样例】
389 207 155 300 299 170 158 65
【输出样例】
2
 * */
//

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main()
{
    int arr[1001]={0};
    int n=0,k=1,missile;
//     输入完成后按CTRL+D
    while(scanf("%d",&missile)!=EOF)
    {
        arr[n]=missile;
        ++n;
    }

//    ==============================
//    int arr[8] = {389, 207, 155, 300, 299, 170, 58, 65};
//    int n = 8;
//    int k = 1;
    // 记录每段最低值
    vector<int> lasts;
    int per = arr[0];
    for (int i = 1; i < n; ++i)
    {
        if (per <= arr[i])
        {
            bool jump=false;
            for(int j:lasts)
            {
                if (arr[i]<=j)
                {
                    jump=true;
                    lasts[k]=arr[i];
                    continue;
                }
            }
            if(!jump)
            {
                lasts.push_back(per);
                sort(lasts.begin(),lasts.end());
                ++k;
            }
        }
        per = arr[i];
    }
    cout << k;
    return 0;
}